package com.fdb.smcts.core.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * 日志管理
 * 
 * @author Cytus_
 * @since 2018年6月4日 上午10:06:39
 * @version 1.0
 *
 */
public class LogManager {

	private static final Logger logger = LoggerFactory.getLogger(LogManager.class);

	/**
	 * info 级别日志
	 * 
	 * @param bizSerno
	 * @param service
	 * @param method
	 */
	public static final void info(String bizSerno, Object service, String method) {
		StackTraceElement ste = new RuntimeException().getStackTrace()[1];
		StringBuffer sb = new StringBuffer();
		sb.append(ste.getClassName()).append(".").append(ste.getMethodName()).append(":").append(ste.getLineNumber());
		sb.append(" - ");
		sb.append("业务流水号:").append(bizSerno).append("当前调用的服务为:").append(service.getClass().getInterfaces()[0].getName()).append(".")
				.append(method);
		logger.info(sb.toString());
	}

	/**
	 * info 级别日志
	 * 
	 * @param bizSerno
	 * @param service
	 * @param method
	 */
	public static final void debug(String bizSerno, Object service, String method) {
		StackTraceElement ste = new RuntimeException().getStackTrace()[1];
		StringBuffer sb = new StringBuffer();
		sb.append(ste.getClassName()).append(".").append(ste.getMethodName()).append(":").append(ste.getLineNumber());
		sb.append(" - ");
		sb.append("业务流水号:").append(bizSerno).append("当前调用的服务为:").append(service.getClass().getName()).append(".").append(method);
		logger.debug(sb.toString());
	}

	/**
	 * warn 级别日志
	 * 
	 * @param bizSerno
	 * @param service
	 * @param method
	 */
	public static final void warn(String bizSerno, Object service, String method) {
		StackTraceElement ste = new RuntimeException().getStackTrace()[1];
		StringBuffer sb = new StringBuffer();
		sb.append(ste.getClassName()).append(".").append(ste.getMethodName()).append(":").append(ste.getLineNumber());
		sb.append(" - ");
		sb.append("业务流水号:").append(bizSerno).append("当前调用的服务为:").append(service.getClass().getName()).append(".").append(method);
		logger.warn(sb.toString());
	}

	/**
	 * error 级别日志
	 * 
	 * @param bizSerno
	 * @param service
	 * @param method
	 * @param e
	 */
	public static final void error(String bizSerno, Object service, String method, Throwable e) {
		StackTraceElement ste = new RuntimeException().getStackTrace()[1];
		StringBuffer sb = new StringBuffer();
		sb.append(ste.getClassName()).append(".").append(ste.getMethodName()).append(":").append(ste.getLineNumber());
		sb.append(" - ");
		sb.append("业务流水号:").append(bizSerno).append("调用服务:").append(service.getClass().getName()).append(".").append(method)
				.append("出现异常!");
		sb.append("Cause by:").append(e.getMessage());
		logger.warn(sb.toString());
	}

}
